const app = getApp();
// pages/user/manager/goods/editGoods/editGoods.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    imgUrl: '',
    show: false,
    columns: [], // Picker 选项
    selected: '' // 保存用户选择
  },

  showPicker() {
    this.setData({ show: true });
  },

  onClose() {
    this.setData({ show: false });
  },

  onConfirm(event) {
    const { value, index } = event.detail;
    var allCategory = this.data.allCategory;
    console.log(value)
    this.setData({
      selected: value, 
      categoryName: allCategory[index].categoryName,
      categoryId: allCategory[index].categoryId,
      show: false
    });
  },

  onCancel() {
    this.setData({ show: false });
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    var _this = this;
    var categoryId = options.categoryId;
    var goodsId = options.goodsId;
    if(goodsId != null && goodsId != undefined){
      // 获取商品信息
      _this.getGoods(goodsId);
    }
    app.getCategory().then(res => {
      var allCategory = res.allCategory;
      var columns = allCategory.map(item => item.categoryName);
      _this.setData({
        allCategory: allCategory, 
        columns: columns 
      })
      if(categoryId != null && categoryId != undefined){
        var index = allCategory.findIndex(item => item.categoryId == categoryId);
        var category = allCategory[index]
        _this.setData({
          categoryName: category.categoryName, 
          selected: category.categoryName,
          categoryId: categoryId 
        })
      }
    });
  },

  getGoods(goodsId){
    var _this = this;
    app.request('/goods/get/' + goodsId, 'GET', {})
    .then(data => {
      if (data.code === 0) {
        _this.setData({
          goodsId: data.goods.goodsId,
          categoryId: data.goods.categoryId,
          goodsName: data.goods.goodsName,
          goodsPrice: data.goods.goodsPrice,
          goodsContent: data.goods.goodsContent,
          imgUrl: app.getFileUrl(data.goods.goodsImg),
          goodsImg: data.goods.goodsImg,
        })
      } else {
        wx.showToast({
          title: data.msg || '请求失败',
          icon: 'none'
        });
      }
    })
    .catch(err => {
      console.log(err)
      wx.showToast({
        title: '服务繁忙',
        icon: 'none'
      });
    });
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },

  selectPic(){
    var _this = this;
    wx.chooseMedia({
      count: 1, // 最多可以选择的图片张数，默认9
      sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图，默认二者都有
      sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机，默认二者都有
      mediaType: ['image'],
      success(res) {
        // tempFilePath可以作为img标签的src属性显示图片
        var tempFiles = res.tempFiles
        // 上传文件
        _this.uploadFile(tempFiles[0].tempFilePath);
      }
    })
  },

  uploadFile(filePath) {
    var _this = this;
    var baseUrl = app.API_BASE_URL;
    wx.uploadFile({
      url: baseUrl + '/file/upload', // 你的后端上传接口
      filePath: filePath,
      name: 'file', // 必须和后端参数名一致
      formData: {
        // 如果需要额外参数可在这里传递
      },
      success(res) {
        var data = JSON.parse(res.data);
        _this.setData({
          imgUrl: app.getFileUrl(data.file), // 后端返回的文件路径或消息
          goodsImg: data.file
        });
      },
      fail(err) {
        console.error(err)
        wx.showToast({
          title: '上传失败: ' + (err.errMsg || JSON.stringify(err)),
          icon: 'error',
          duration: 3000
        });
        // 复制到剪贴板
        wx.setClipboardData({
          data: (err.errMsg || JSON.stringify(err)),
          success() {
            console.log('错误信息已复制到剪贴板');
          }
        });
      }
    })
  },

  deleteGoods(){
    let _this = this;
    let { goodsId } = _this.data;
    app.request('/goods/delete', 'POST', {
      goodsId: goodsId,
    })
    .then(data => {
      if (data.code === 0) {
        wx.showToast({
          title: data.msg,
          icon: 'none'
        })
        wx.navigateBack({
          delta: 1 // 返回上一级页面，delta 可以设置返回层数
        })
      } else {
        wx.showToast({
          title: data.msg || '请求失败',
          icon: 'none'
        });
      }
    })
    .catch(err => {
      wx.showToast({
        title: '服务繁忙',
        icon: 'none'
      });
    });
  },

  addGoods(){
    var _this = this;
    var { categoryId, goodsName, goodsContent, goodsPrice, goodsImg, goodsId } = _this.data;
    // 检查是否有空值
    let requiredFields = [
      { value: goodsName, msg: '请输入商品名称' },
      { value: goodsContent, msg: '请输入商品描述' },
      { value: goodsPrice, msg: '请输入商品价格' },
      { value: goodsImg, msg: '请上传商品图片' },
      { value: categoryId, msg: '请选择类别' }
    ];
    for (let field of requiredFields) {
      if (!field.value) {
        wx.showToast({
          title: field.msg,
          icon: 'none'
        });
        return;
      }
    }
    // 保存数据
    app.request('/goods/update', 'POST', {
      goodsName: goodsName,
      goodsContent: goodsContent,
      goodsPrice: goodsPrice,
      goodsImg: goodsImg,
      categoryId: categoryId,
      goodsId: goodsId,
    })
    .then(data => {
      if (data.code === 0) {
        wx.showToast({
          title: data.msg,
          icon: 'none'
        })
        _this.setData({
          goodsId: data.goods.goodsId
        })
      } else {
        wx.showToast({
          title: data.msg || '请求失败',
          icon: 'none'
        });
      }
    })
    .catch(err => {
      wx.showToast({
        title: '服务繁忙',
        icon: 'none'
      });
    });
  },

  // 商品名称输入
  onGoodsNameInput(e) {
    this.setData({
      goodsName: e.detail
    });
  },

  // 商品描述输入
  onGoodsContentInput(e) {
    this.setData({
      goodsContent: e.detail
    });
  },

  // 商品价格输入
  onGoodsPriceInput(e) {
    let value = e.detail;
    // 只保留数字和小数点
    value = value.replace(/[^\d.]/g, '');
    // 开头不能是小数点
    value = value.replace(/^\./, '');
    // 只能有一个小数点
    value = value.replace(/\.{2,}/g, '.');
    value = value.replace('.', '#').replace(/\./g, '').replace('#', '.');
    // 限制两位小数
    value = value.replace(/^(\d+)(\.\d{0,2}).*$/, '$1$2');

    this.setData({
      goodsPrice: value
    });
  }
})